<?php

class Administrador_JogoController extends Zend_Controller_Action {

    private $_participantes = null;

    public function init() {
        /* Initialize action controller here */
        $this->_participantes = new Application_Model_GerenciadorParticipantesBolao();
    }

    public function indexAction() {
        //Redirecionando para o action Criar. Pode ser necessário mudar futuramente.
        $this->_helper->redirector('criar');
    }

    public function criarAction() {
        $campeonatoMapper = new Application_Model_CampeonatoMapper();
        $timeMapper = new Application_Model_TimeMapper();

        $form = new Application_Form_CriarJogo($timeMapper,
                $campeonatoMapper);
        $request = $this->getRequest();

        if($request->isPost()) {
            $post = $request->getPost();

            $form = new Application_Form_CriarJogo($timeMapper,
                    $campeonatoMapper, $post);


            if ($form->isValid($post)) {

                $dataString = $form->getValue('data').' '.$form->getValue('hora');

                $dataDoJogo = new Zend_Date($dataString, 'dd-MM-yyyy HH:mm');
                $timeA = $form->getValue('timeA');
                $timeB = $form->getValue('timeB');

                //comparando datas para certificar que a data inserida está no futuro.
                $dataAtual = new Zend_Date();
                if($dataDoJogo->isEarlier($dataAtual)) {
                    $form->setDescription('Erro: Data inserida está no passado.');
                }

                //comparando times escolhidos para evitar que sejam idênticos:
                else if(strcasecmp($timeA, $timeB) == 0) {
                    $form->setDescription('Times escolhidos são iguais!');
                }

                else {

                    $jogo = new Application_Model_Jogo(
                            null,
                            $form->getValue('campeonato'),
                            $dataDoJogo,
                            $timeA,
                            $timeB
                    );

                    $persistencia = new Application_Model_JogoMapper();

                    try {
                        $persistencia->salvar($jogo);
                        $form = new Application_Form_CriarJogo($timeMapper, $campeonatoMapper);
                        $form->setDescription('Jogo cadastrado com sucesso');
                    } catch (Exception $ex) {
                        $form->setDescription('Mil desculpas, algo deu errado.
                                        Talvez esse jogo já esteja cadastrado.');
                    }

                }

            }

        }

        $this->view->form = $form;
    }

    public function visualizarAction() {
        $request = $this->getRequest();
        $inicio = $this->getRequest()->getParam('inicio', 0);
        $quantidade = $this->getRequest()->getParam('quantidade', 10);

        $this->view->total = $this->_participantes->getTotalJogos();
        $this->view->inicio = $inicio;
        $this->view->quantidade = $quantidade;
        $this->view->jogos = $this->_participantes->getJogos($inicio, $quantidade);
    }

    public function jogosSemResultadosAction() {
        
        $request = $this->getRequest();
        $inicio = $this->getRequest()->getParam('inicio', 0);
        $quantidade = $this->getRequest()->getParam('quantidade', 10);

        $this->view->total = $this->_participantes->getTotalJogosSemResultados();
        $this->view->inicio = $inicio;
        $this->view->quantidade = $quantidade;
        $this->view->jogos = $this->_participantes->getJogosSemReultados($inicio, $quantidade);
        
    }

    
}







